﻿
using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace shh // Note: actual namespace depends on the project name.
{
    //列表
class Program
    {
        static void Main(string[] args)
        {
            //string a;
            //a = Console.ReadLine();
            //Console.WriteLine(a);

            //c++里面的范围for
            //int[] tmp = new int[6] { 1, 2, 3, 4, 5, 6 };
            //foreach (var e in tmp)
            //{
            //    Console.Write("{0} ", e);
            //}

            //动态数组
            List<int> l1 = new List<int> { 1, 2, 3 };

            //在后面插入
            l1.Add(6);
            l1.Add(50);
            foreach (var e in l1)
            {
                Console.Write("{0} ", e);
            }
            Console.WriteLine();

            //在任意位置插入
            l1.Insert(0, 66);
            Console.WriteLine("Insert在下标0插入66后:");
            foreach (var e in l1)
            {
                Console.Write("{0} ", e);
            }

            Console.WriteLine();
            //删除某个字符
            l1.Remove(2);
            Console.WriteLine("Remove删除2后:");
            foreach (var e in l1)
            {
                Console.Write("{0} ", e);
            }

            Console.WriteLine();
            //删除某个下标
            l1.RemoveAt(0);
            Console.WriteLine("RemoveAt删除下标为0后:");
            foreach (var e in l1)
            {
                Console.Write("{0} ", e);
            }

            Console.WriteLine();
            //计算列表长度
            Console.WriteLine("列表长度:{0}", l1.Count);

            //判断列表里面是否有某个元素
            int num = 50;
            bool test = l1.Contains(num);
            if (test)
            {
                Console.WriteLine("l1存在{0}", num);
            }
            else
            {
                Console.WriteLine("l1不存在{0}", num);
            }
            Console.WriteLine();

            //修改下标为1的值
            l1[1] = 666;
            for (int i = 0; i < l1.Count; i++)
            {
                Console.Write("{0} ", l1[i]);
            }
            Console.WriteLine();

            l1.Clear();
            Console.WriteLine("列表长度:{0}", l1.Count);

        }
    }

//    字典
//class program
//    {
//        static void Main(string[] args)
//        {
//            //创建字典  key-value模型
//            Dictionary<string, int> dic = new Dictionary<string, int>();

//            //Add添加键值对
//            dic.Add("张三", 111);
//            dic.Add("李四", 222);

//            //获取当前字典存储个数
//            Console.WriteLine("字典的个数为:{0}", dic.Count);

//            //判断key值在字典是否存在
//            bool flag = dic.ContainsKey("张三");
//            if (flag) Console.WriteLine("张三在字典");
//            else Console.WriteLine("张三不在字典");
//            //判断value值在字典是否存在
//            bool test = dic.ContainsValue(111);
//            if (test) Console.WriteLine("111在字典");
//            else Console.WriteLine("111不在字典");

//            //用key值获取value.
//            int val = 0;
//            bool v = dic.TryGetValue("sss", out val);
//            if (v) Console.WriteLine(val);
//            else Console.WriteLine(val);
//            int num = dic["张三"];
//            Console.WriteLine($"张三的年龄是:{num}");

//            //清空字典
//            //dic.Clear();
//            //Console.WriteLine("字典的个数为:{0}", dic.Count);

//            //遍历
//            //先拿到每一个键值对<k v>的k值
//            List<string> l2 = new List<string>(dic.Keys);
//            for (int i = 0; i < dic.Count; i++)
//            {
//                Console.WriteLine("Key={0},Value={1}", l2[i], dic[l2[i]]);
//            }
//            foreach (var e in dic.Keys)
//            {
//                //Console.WriteLine($"Key={e},Value={dic[e]}");
//                Console.WriteLine("Key={0},Value={1}", e, dic[e]);
//            }

//            //Console.WriteLine("字典的个数为:{0}", dic.Count);   //传统写法.格式化字符串
//            //Console.WriteLine($"Key={e},Value={dic[e]}");       //字符串插值,更简洁
//        }
//    }

//    链表
//class Program
//    {
//        static void Main(string[] args)
//        {
//            LinkedList<int> list = new LinkedList<int>();
//            list.AddFirst(111); //链头
//            list.AddLast(9999); //链尾
//            foreach (int i in list) Console.Write($"{i} ");
//            Console.WriteLine();

//            LinkedListNode<int> node = list.Find(111);
//            list.AddFirst(222);
//            //foreach (int i in list) Console.Write($"{i} ");
//            //Console.WriteLine(list.Count);

//            list.AddBefore(node, 996);
//            list.AddAfter(node, 007);
//            foreach (int i in list) Console.Write($"{i} ");
//            Console.WriteLine();

//            list.Remove(222);
//            list.RemoveLast();

//            foreach (int i in list) Console.Write($"{i} ");

//        }
//    }
//    栈和队列
//class Program
//    {
//        static void Main(string[] args)
//        {
//            //{ "first", "second", "third" }
//            Queue<string> q = new Queue<string>(new[] { "first", "second", "third" });
//            bool test = q.Contains("first");
//            q.Enqueue("first");
//            q.Enqueue("second");
//            q.Enqueue("third");
//            foreach (var e in q)
//            {
//                Console.WriteLine($"{e} ");
//            }

//            获取队头元素
//            Console.WriteLine(q.Peek());

//            int cnt = q.Count;
//            for (int i = 0; i < cnt; i++)
//            {
//                //获取队头元素并删除
//                Console.WriteLine(q.Dequeue());
//            }

//            Stack<string> st = new Stack<string>(new[] { "first", "second", "third" });
//            foreach (var e in st)
//            {
//                Console.WriteLine(e);
//            }
//            Console.WriteLine();
//            st.Push("fourth");
//            bool tmp = st.Contains("first");

//            //foreach (var e in st)
//            //{
//            //    Console.WriteLine(e);
//            //}

//            int cnt = st.Count;
//            for (int i = 0; i < cnt; i++)
//            {
//                //peek和队列功能类似,dequeue和pop功能类似
//                Console.WriteLine(st.Pop());
//            }
//            Console.WriteLine(st.Count);


//        }
//    }

//    哈希表
//class Program
//    {
//        static void Main(string[] args)
//        {
//            Hashtable ht = new Hashtable();
//            ht.Add("A", "a");
//            ht.Add("B", "b");
//            ht.Add("C", "c");
//            ht.Add("D", "d");

//            foreach (DictionaryEntry e in ht)
//            {
//                Console.WriteLine($"key={e.Key},value={e.Value}");
//            }

//            foreach (var e in ht.Keys)
//            {
//                Console.WriteLine($"key={e},value={ht[e]}");
//            }

//            foreach (var e in ht.Values)
//            {
//                Console.WriteLine($"key={ht[e]},value={e}");
//            }
//        }
//    }

//    set
//class Program
//    {
//        static void Main(string[] args)
//        {
//            HashSet<string> hash1 = new HashSet<string>(new[] { "111", "222", "333" });
//            HashSet<string> hash2 = new HashSet<string>(new[] { "1119", "2229", "333" });

//            hash1.Add("999");
//            hash1.Add("111");
//            hash1.Add("999");

//            foreach (var item in hash1)
//            {
//                Console.WriteLine(item);
//            }
//            Console.WriteLine();

//            hash1.UnionWith(hash2); //并集
//            foreach (var item in hash1)
//            {
//                Console.WriteLine(item);
//            }
//            Console.WriteLine();

//            hash2.IntersectWith(hash1); //交集
//            foreach (var item in hash2)
//            {
//                Console.WriteLine(item);
//            }
//            Console.WriteLine();

//            hash2.ExceptWith(hash1); //差集
//            foreach (var item in hash2)
//            {
//                Console.WriteLine(item);
//            }
//            Console.WriteLine();

//            hash2.SymmetricExceptWith(hash1); //补集
//            foreach (var item in hash2)
//            {
//                Console.WriteLine(item);
//            }
//            Console.WriteLine();

//            SortedSet<int> hash3 = new SortedSet<int>(new[] { 999, 5, 4, 8, 2, 555, 5, 4 });
//            foreach (var item in hash3)
//            {
//                Console.WriteLine(item);
//            }

//            SortedDictionary<int, string> dic = new SortedDictionary<int, string>();
//            dic.Add(1, "HaHa");
//            dic.Add(5, "HoHo");
//            dic.Add(3, "HeHe");
//            dic.Add(2, "HiHi");
//            dic.Add(4, "HuHu1");
//            dic[4] = "HuHu";
//            foreach (var item in dic)
//            {
//                Console.WriteLine($"Key:{item.Key}, Value:{item.Value}");
//            }

//        }
//    }
}

//using System;

//namespace CalculatorApplication
//{
//    class NumberManipulator
//    {
//        public int FindMax(int num1, int num2)
//        {
//            /* 局部变量声明 */
//            int result;

//            if (num1 > num2)
//                result = num1;
//            else
//                result = num2;

//            return result;
//        }

//    }
//    class shh
//    {
//        static void Main(string[] args)
//        {
//            /* 局部变量定义 */
//            int a = 100;
//            int b = 200;
//            int ret;
//            //类定义对象
//            NumberManipulator n = new NumberManipulator();

//            //调用 FindMax 方法
//            ret = n.FindMax(a, b);
//            Console.WriteLine("最大值是： {0}", ret);
//            Console.ReadLine();
//        }
//    }
//}

//namespace shh // Note: actual namespace depends on the project name.
//{
//    c#字符串
//    class Program
//    {
//        static void Main(string[] args)
//        {
//            string[] sarray = { "Hello", "From", "Tutorials", "Point" };
//            string miss = sarray[0] + sarray[2];
//            string message = String.Join("$$", sarray);
//            Console.WriteLine("Message: {0}", message);
//            Console.WriteLine($"Message: {miss}");


//        }
//    }
//}

